Dostupnost promenych

Otázka od: mad@worldmail.cz

5. 4. 2004 11:36




Hezky den,

 dokazete mi nekdo vysvetlit, proc a jak funguje nasledujici pripad ?

Pr. Mam dve unity:

main.pas:

Procedure delejNeco;
begin
 ShowMessage('Main:'+IntToStr(MainMenu1.Items.Items[3].Count)); //!!!!!
  ActualToolMenu;
end;

dalsi.pas:

procedure ActualTooMenu;
begin

 If MainMenu1.Items.Items[3].Items[0].Count > 0 Then
   For X:=0 To MainMenu1.Items.Items[3].Items[0].Count-1 do
MainMenu1.Items.Items[3].Items[0].Items[X].Checked:=Options.ToolMenu[X];
end;


Z main.pas zavolam "delejNeco". Pokud v tedo procedure je ShowMessage...,
tak se ActualToolMenu korektne provede. Pokud ovsem ShowMessage vypustim,
tak procedura ActualToolMenu spadne s chybovou hlaskou (index out of...)

Prosim Vas o vysvetleni kde je chyba. Dal jsem sem jen podstatne casti kodu,
ostatni casti na toto nemaji vliv.


Dekuji.

Michal A.

.



Odpovedá: mad@worldmail.cz

5. 4. 2004 11:56




A jeste zajimavejsi vec:

Procedure delejNeco;

begin

ShowMessage('Main:'+IntToStr(MainMenu1.Items.Items[3].Count)); //Zobrazi se
"0"

ShowMessage('Main:'+IntToStr(MainMenu1.Items.Items[3].Count)); //Zobrazi se
"1"

ActualToolMenu;

end;



Nechapu  



Michal A.

.



Odpovedá: Jiri Cincura

5. 4. 2004 17:22

mad@worldmail.cz wrote:
>
> Procedure delejNeco;
> begin
> ShowMessage('Main:'+IntToStr(MainMenu1.Items.Items[3].Count));
> //!!!!! ActualToolMenu;

Count se indexuje od nuly. Cili pro posledni/pocet musi byt Count-1.

--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
web: http://www.cincura.net; http://cincura.net/photo